

package com.scs.application.modules.base.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.scs.application.core.model.DataEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * HospitalMaterial实体对象
 */
@TableName("hospital_material")
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@Accessors(chain = true)
public class HospitalMaterial extends DataEntity implements Serializable {

    /** 医院标识 */
    @NotNull(message="医院标识不能为空")
    private String hospitalId;

    private String catalogId;

    /** 商品ID */
    @NotNull(message="商品ID不能为空")
    private String materialId;

    /** 商品规格ID */
    @NotNull(message="商品规格ID不能为空")
    private String materialSpecId;

    /** 商品编码 */
    @Length(max=20, message="商品编码长度必须介于 0 和 20 之间")
    private String materialCode;

    /** 商品名称 */
    @Length(max=50, message="商品名称长度必须介于 0 和 50 之间")
    private String materialName;

    /** 商品通用名 */
    @Length(max=50, message="商品通用名长度必须介于 0 和 50 之间")
    private String materialTradeName;

    /** 剂型 */
    private String form;

    /** 价格 */
    private Double price;

    /** 最小请领单位 */
    @Length(max=20, message="最小请领单位长度必须介于 0 和 20 之间")
    private String miniumRequestUnit;

    /** 最小请领单位数量 */
    private Double miniumRequestQty;

    /** 最小订单单位 */
    @Length(max=20, message="最小订单单位长度必须介于 0 和 20 之间")
    private String orderUnit;

    /** 最小订单单位数量 */
    private Double orderQty;

    /** 单位 */
    private String unit;

    /** 注册证号 */
    private String certificateNo;

    /** 是否寄售 */
    private Integer isConsignment;

    /** 是否一物一码 */
    private Integer isOneThingOneYard;

    /** 厂商ID */
    private String manufacturerId;

    /** 厂商名称 */
    private String manufacturerName;

    /** 供方ERP代码 */
    private String materialErpCode;

    /** 停用标志 */
    @NotNull(message="停用标志不能为空")
    private Integer inactive;

    /**医院名称*/
    @TableField(exist = false)
    private String hospitalName;

    /**供应商ID*/
    private String supplierId;

    /**供应商代码*/
    @TableField(exist = false)
    private String supplierCode;

    /**供应商名称*/
    private String supplierName;

    /**品类名称*/
    @TableField(exist = false)
    private String catalogName;

    /**商品规格*/
    private String materialSpec;

    /** hrp编码 */
    private String materialHrpCode;

    /** 注册证效期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date certificateExpiredDate;

    /** 注册证开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date certificateExpiredStartDate;


    /** 是否阳采 **/
    private Integer isSunPurchase;

    /** 阳采代码 **/
    private String sunPurchaseCode;

    /** 阳采代码规格 **/
    private String sunPurchaseSpecId;
    /**
     * 医用耗材编码
     */
    private String medicalConsumablesCode;

    public static final int ACTIVATE = 1;
    public static final int DEACTIVATE = 0;


    // 中标号
    private String bidno;

    // udi
    private String udi;

    /** 商品类型 **/
    @TableField(exist = false)
    private String materialTypeCode;


    //医保代码20位
    private String hisMedicareNo;

    //医保名称20位
    private String hisMedicareName;

    //医保代码27位
    private String hisMedicareNo2;

    //医保名称27位
    private String hisMedicareName2;

    //lms 数据最后更新时间
    private Date gmtModifiedLms;

    // 院内品类 代码
    private String hospitalCatalogCode;

    // 院内品类 名称
    private String hospitalCatalogName;

    // 院内品类 id
    private String hospitalCatalogId;

    // 商品禁用
    @TableField(exist = false)
    private Boolean materialFlagDisabledScp;


    /**
     * 禁止新增订单：1:订单新增时该医院不可选择
     */
    @TableField(exist = false)
    private Boolean flagEnabledMaterialEdit;

    /**
     * 已供货商品修改说明，在编辑页面提示
     */
    @TableField(exist = false)
    private String enabledMaterialEditRemark;

}
